package hcn.api.service.brandnew.sign;

import ctd.controller.exception.ControllerException;
import ctd.util.annotation.RpcService;
import hcn.protocol.brandnew.sign.*;

import java.util.List;

/**
 * 家医公卫接口
 *
 */
public interface IFamilySignChisService {

    /**
     * 根据机构编码获取公卫医生列表
     */
    @RpcService
    List<GetUidListResponse> getUidList(GetUidListRequest request) throws ControllerException;

    /**
     * 获取公卫团队列表
     */
    @RpcService
    PageInfo<ChisTeamListResponse> getFTeamList(ChisTeamListRequest request) throws ControllerException;

    /**
     *  查询公卫服务包列表
     */
    @RpcService
    List<GetServicePackagesResponse> getServicePackages(GetServicePackagesRequest request) throws ControllerException;

    /**
     *  查询公卫服务项列表
     */
    @RpcService
    List<GetServiceItemsResponse> getServiceItems(GetServiceItemsRequest request) throws ControllerException;

    /**
     * 签约同步到公卫
     */
    @RpcService
    ChisSignSaveResponse saveSignContract(SaveSignContractRequest request) throws ControllerException;

    /**
     * 获取公卫签约列表
     */
    @RpcService
    PageInfo<ChisQuerySignResponse> getSignRecordList(ChisQuerySignRequest request) throws ControllerException;


    /**
     * 获取家庭成员当前的签约记录列表
     */
    @RpcService
    List<ChisQuerySignResponse> queryFamilyCurrentSignRecordList(QueryFamilySignRecordRequest request) throws ControllerException;

    /**
     * 获取公卫签约详情
     */
    @RpcService
    GetSignDetailsResponse getSignDetails(GetSignDetailsRequest request) throws ControllerException;

    /**
     * 获取待预约包项信息
     */
    @RpcService
    List<ChisSignPlanResponse> queryReservationInfo(QueryReservationInfoRequest request) throws ControllerException;

    /**
     * 获取团队待服务包信息
     */
    @RpcService
    List<ChisSignPlanResponse> querySignContractPackageByTeam(QuerySignContractPackageRequest request) throws ControllerException;

    /**
     * 获取团队待服务项信息
     */
    @RpcService
    List<ChisSignPlanItemResponse> queryItemsToBeServedByTeamAndPackage(QueryItemsToBeServedRequest request) throws ControllerException;

    /**
     * 获取签约服务包对应项详情
     */
    @RpcService
    ChisSignPlanResponse queryItemsToBeServedByScidAndSpid(QueryItemsToBeServedByScIdRequest request) throws ControllerException;

    /**
     * 获取项服务人信息
     */
    @RpcService
    List<QueryPersonToBeServedResponse> queryPersonToBeServed(QueryPersonToBeServedRequest request) throws ControllerException;

    /**
     * 执行履约服务保存
     */
    @RpcService
    void doSignContractWorkdo(DoSignContractWorkdoRequest request) throws ControllerException;

    /**
     * 获取履约服务记录
     */
    @RpcService
    PageInfo<QuerySignContractWorkListDocResponse> querySignContractWorkListDoc(QuerySignContractWorkListDocRequest request) throws ControllerException;

    /**
     * 根据身份证获取公卫专档人群信息
     */
    @RpcService
    RecordPeopleGroupResponse getHealthRecordPeopleInfo(GetHealthRecordPeopleInfoRequest request) throws ControllerException;

    /**
     * 查询公卫预约记录
     */
    @RpcService
    PageInfo<ChisAppointmentResponse> queryOrderServiceList(QueryOrderServiceListRequest request) throws ControllerException;

    /**
     * 查询公卫预约详情
     */
    @RpcService
    ChisAppointmentResponse queryOrderServiceDetail(QueryOrderServiceDetailRequest request) throws ControllerException;

    /**
     * 查询公卫有预约未服务完成状态
     */
    @RpcService
    QueryPersonHasOrderResponse queryPersonHasOrder(QueryPersonHasOrderRequest request) throws ControllerException;

    /**
     * 公卫保存预约记录
     */
    @RpcService
    OrderServiceResponse orderService(OrderServiceRequest request) throws ControllerException;

    /**
     * 公卫取消预约
     */
    @RpcService
    void deleteOrderService(DeleteOrderServiceRequest request) throws ControllerException;

    /**
     * 公卫审核预约
     */
    @RpcService
    void examineOrderService(ExamineOrderServiceRequest request) throws ControllerException;

    /**
     * 获取公卫签约协议内需填写信息
     */
    @RpcService
    GetSignProtocolResponse getSignProtocole(GetSignProtocolRequest request) throws ControllerException;

    /**
     * 查询家医签约到期提前提醒时间
     */
    @RpcService
    QueryContractExpirationTimeResponse queryContractExpirationTime() throws ControllerException;

    /**
     * 签约支付后同步支付信息到公卫
     */
    @RpcService
    void checkPayInfo(CheckPayInfoRequest request) throws ControllerException;

    /**
     * 修改签约信息到公卫
     */
    @RpcService
    void modifySignRecord(ModifySignRecordRequest request) throws ControllerException;

    /**
     * 查询公卫抵用券列表
     */
    @RpcService
    List<ChisVoucherResponse> getVoucherList(GetVoucherListRequest request) throws ControllerException;

    /**
     * 支付时查询公卫可用抵用券列表
     */
    @RpcService
    List<ChisVoucherResponse> getUsableVoucherList(UsableVoucherRequest request) throws ControllerException;

    /**
     * 获取医生签约成功有效数量
     */
    @RpcService
    CountSignRecordResponse countSignRecord(CountSignRecordRequest request) throws ControllerException;

    /**
     * 获取医生待确认数量
     */
    @RpcService
    CountConfirmSignRecordResponse countConfirmSignRecord(CountConfirmSignRecordRequest request) throws ControllerException;

    /**
     * 保存评价到公卫
     */
    @RpcService
    void saveResidentEvaluation(SaveResidentEvaluationRequest request) throws ControllerException;

    /**
     * 查询公卫评价列表
     */
    @RpcService
    List<ChisEvaluationRecordResponse> getResidentEvaluation(GetResidentEvaluationRequest request) throws ControllerException;

    /**
     * 查询公卫评价详情
     */
    @RpcService
    ChisEvaluationRecordResponse getResidentEvaluationDetail(GetResidentEvaluationDetailRequest request) throws ControllerException;

    /**
     * 公卫开启咨询
     */
    @RpcService
    BeginConsultingResponse beginConsulting(BeginConsultingRequest request) throws ControllerException;

    /**
     * 公卫开启咨询
     */
    @RpcService
    SendMessageResponse sendMessage(SendMessageRequest request) throws ControllerException;

    /**
     * 公卫查询消息
     */
    @RpcService
    PageInfo<GetMessageResponse> getMessage(GetMessageRequest request) throws ControllerException;

    /**
     * 公卫查询咨询
     */
    @RpcService
    PageInfo<ChisSignConsultResponse> getConsulting(GetConsultingRequest request) throws ControllerException;

    /**
     * 公卫结束咨询
     */
    @RpcService
    void endConsulting(EndConsultingRequest request) throws ControllerException;

    /**
     * 查询居民是否已开启咨询，返回公卫咨询主键
     */
    @RpcService
    CheckOpenResponse checkOpen(CheckOpenRequest request) throws ControllerException;

    /**
     * 签约CA协议查询服务
     **/
    @RpcService
    GetCADetailsResponse getCADetails(GetCADetailsRequest request) throws ControllerException;

    /**
     * 医生端咨询角标的接口
     **/
    @RpcService
    GetAwaitConsultingCountResponse getAwaitConsultingCount(GetAwaitConsultingCountRequest request) throws ControllerException;

    /**
     *  医生端和居民端咨询列表的接口
     **/
    @RpcService
    PageInfo<GetAwaitConsultingResponse> getAwaitConsulting(GetAwaitConsultingRequest request) throws ControllerException;

    /**
     *  查询家庭成员列表
     **/
    @RpcService
    PageInfo<QueryFamilyMemberResponse> queryFamilyMember(QueryFamilyMemberRequest request) throws ControllerException;

}
